#!/usr/bin/env python
# -*- coding:utf-8 -*-

# https://www.cnblogs.com/kaituorensheng/p/3287652.html
# pyhon之Tkinter实例化学习

import tkinter
from public_function import dict_choice

'''Listbox
说明
　　列表控件,可以含有一个或多个文本想,可单选也可多选
用法
　　创建:lb = ListBox(根对象, [属性列表])
　　绑定变量 var=StringVar()    lb=ListBox(根对象, listvariable = var)
　　得到列表中的所有值   var.get()
　　设置列表中的所有值   var.set((item1, item2, .....))
　　添加:lb.insert(item)
　　删除:lb.delete(item,...)
　　绑定事件 lb.bind('<ButtonRelease-1>', 函数)
　　获得所选中的选项 lbl.get(lb.curselection())
属性
　　selectmode可以为BROWSE MULTIPL SINGLE
'''


def test_1():
    root = tkinter.Tk()
    root.title("hello world")
    root.geometry()
    root.resizable(width=False, height=True)  # 宽不可变, 高可变,默认为True

    def print_item(event):
        print(lb.get(lb.curselection()))

    var = tkinter.StringVar()
    lb = tkinter.Listbox(root, listvariable=var)
    list_item = [1, 2, 3, 4]  # 控件的内容为1 2 3 4
    for item in list_item:
        lb.insert(tkinter.END, item)
    lb.delete(2, 4)  # 此时控件的内容为1 3

    var.set(('a', 'ab', 'c', 'd'))  # 重新设置了，这时控件的内容就变成var的内容了
    print(var.get())
    lb.bind('<ButtonRelease-1>', print_item)
    lb.pack()

    root.mainloop()


def test_2():
    root = tkinter.Tk() # 创建窗口对象的背景色

    # 创建两个列表
    list = ['C', 'python', 'php', 'html', 'SQL', 'java']
    movie = ['CSS', 'jQuery', 'Bootstrap']

    # 创建两个列表组件
    listb = tkinter.Listbox(root)
    listb2 = tkinter.Listbox(root)

    # 第一个小部件插入数据
    for item in list:
        listb.insert(0, item)

    # 第二个小部件插入数据
    for item in movie:
        listb2.insert(0, item)

    # 将小部件放置到主窗口中显示出来
    listb.pack()
    listb2.pack()

    root.mainloop() # 进入死循环,让窗口一直显示


def make_choice(dict_choice):
    choice = str(input("Enter a positive integer to choice: "))
    if choice in dict_choice.keys():
        exec(dict_choice[choice])
    else:
        print("输入有误，请重输！", choice)


def main():
    make_choice(dict_choice)


if __name__ == '__main__':
    main()
